home *** CD-ROM | disk | FTP | other *** search
/ Just Call Me Internet / Just Call Me Internet.iso / prog / atari / m2 / cat3src / cat / msglistb.d < prev    next >
Text File  |  1997-10-26  |  9KB  |  240 lines

  1. DEFINITION MODULE MsgListBase;
  2.  
  3. FROM SYSTEM IMPORT ADDRESS;
  4.  
  5. IMPORT Lists;
  6. IMPORT GrafBase;
  7.  
  8. IMPORT mtUtils;
  9.  
  10. IMPORT grin;
  11. IMPORT data;
  12. IMPORT CatTypes;
  13. IMPORT handlePool;
  14.  
  15. CONST 
  16.       maxParts  = 12;                           (* Anzahl der maximalen verschiedenen Zeilenteile *)
  17.       partFormatLength = 32;                    (* maximale L„nge eines Formatstrings *)
  18.       
  19.       (* Einzelne Bits in flags *)
  20.       Selected  = 0;
  21.       inTree    = 1;
  22.       notRead   = 2;
  23.       doRedraw  = 3;
  24.       firstRead = 4;
  25.       initRead  = 5;
  26. TYPE 
  27.      lEntry     = RECORD
  28.                     msgNum      : CARDINAL;
  29.                     flags       : BITSET;
  30.                     strPtr      : CatTypes.Str1023Ptr;
  31.                   END;
  32.  
  33.      listEntry  = RECORD
  34.                     msgNum      : CARDINAL;
  35.                     flags       : BITSET;
  36.                     CASE: INTEGER OF
  37.                       0: strPtr      : CatTypes.Str1023Ptr; |
  38.                       1: treeNum     : LONGCARD;            |
  39.                     END;
  40.                   END;
  41.  
  42.      listEntryPtr = POINTER TO listEntry;
  43.  
  44.      listArray  = ARRAY [0..$FFFF] OF listEntry;
  45.  
  46.      listArrayPtr = POINTER TO listArray;
  47.      
  48.      partNameType = (pUserName, pRealName, pMailId, pRefId, pWegen, pStatus, 
  49.                      pDatum, pComments, pFlags, pCount, pMId, pOwnMess, 
  50.                      pLength, pTime, pWeekday, pFuzzytime);
  51.      
  52.      partFormat = ARRAY [0..partFormatLength-1] OF CHAR;
  53.      
  54.      partType   = RECORD
  55.                     type        : partNameType;
  56.                     w           : INTEGER;
  57.                     formatStr   : partFormat;
  58.                   END;
  59.      partArrayType = ARRAY [0..maxParts-1] OF partType;
  60.      partArrayDesc = RECORD
  61.                        lines : INTEGER;
  62.                        width : INTEGER;
  63.                        parts : partArrayType;
  64.                      END;
  65.  
  66.      listWindow = RECORD
  67.                     wdw         : INTEGER;      (* Windowhandle *)
  68.                     vdi         : INTEGER;      (* VDI-Handle   *)
  69.                     isHidden    : BOOLEAN;      (* Window is hidden *)
  70.                     isLocked    : BOOLEAN;      (* Redraw wird nicht ausgefhrt! *)
  71.                     wholeList   : listArrayPtr; (* Array mit allen Listeneintr„gen *)
  72.                     list        : listArrayPtr; (* Array der Listeneintr„ge *)
  73.                     butWork,                    (* Rechteck des Objektbaumes *)
  74.                     listWork    : GrafBase.Rectangle; (* Workrectangle des Fensters *)
  75.                     number      : INTEGER;      (* Nummer des Fensters im Modul *)
  76.                     font, 
  77.                     fontSize    : INTEGER;      (* Font & Gr”že *)
  78.                     startPos    : CARDINAL;     (* aktuelle Top-Position *)
  79.                     maxPos      : CARDINAL;     (* Anzahl der Messages in der Gruppe *)
  80.                     leftOffset  : INTEGER;
  81.                     maxWidth    : INTEGER;
  82.                     unreadOrNew : BOOLEAN;
  83.                     grHandle    : handlePool.oneHandlePtr;      (* Gruppenhandle *)
  84.                     grName      : ARRAY [0..255] OF CHAR;       (* Gruppenname fr Titelzeile *)
  85.                     charHeight,                 (* Zeichensatzvariablen *)
  86.                     charWidth   : INTEGER;
  87.                     isFSM       : BOOLEAN;
  88.                     monoSpaced  : BOOLEAN;
  89.                     usedByGrin  : INTEGER;
  90.                     openMode    : grin.openMode;
  91.                     grinWindow  : INTEGER;              (* Wenn >= 0, dann wurde es von grin aus aufgerufen *)
  92.                     partArray   : partArrayDesc;        (* Aufbau der einzelnen Zeilen *)
  93.                     (* Neu fr Cursor-Control *)
  94.                     cursPos     : LONGINT;              (* Indexnummer fr Cursor; -1 : Nicht sichtbar *)
  95.                     entryWidth  : INTEGER;              (* Breite in Pixeln einer Zeile *)
  96.                     windLines   : INTEGER;              (* Zeilen im Fenster *)
  97.                     (* Fr Drag & Drop *)
  98.                     currentExt  : INTEGER;
  99.                     dataSize    : LONGCARD;
  100.                   END;
  101.      listWdwPtr = POINTER TO listWindow;
  102.      
  103. TYPE sortType = (sVon, sWegen, sTree, sNum, sSize, sDate);
  104.  
  105. VAR     windows         : Lists.List;
  106.         lineDist        : INTEGER;
  107.         pixOffset       : INTEGER;
  108.         privateParts    : partArrayDesc;
  109.         globalParts     : partArrayDesc;
  110.         
  111.         ownEff          : BITSET;
  112.         quoteEff        : BITSET;
  113.         
  114.         lastSaveMode    : INTEGER;
  115.         extendedCommentMode : BOOLEAN;
  116.         globalNumber    : INTEGER;
  117.  
  118.         (* Objektb„ume *)
  119.         butBox   : mtUtils.tObjcTree;
  120.         selPop   : mtUtils.tObjcTree;
  121.         removePop: mtUtils.tObjcTree;
  122.         sortPop  : mtUtils.tObjcTree;
  123.         
  124. PROCEDURE FindNum () : INTEGER;
  125.  
  126. PROCEDURE ClearNum (num : INTEGER);
  127.  
  128. (*$Z-*)
  129. PROCEDURE FindWinCond(e, i : ADDRESS):BOOLEAN;
  130. (* Abbruchprozedur, wie in <Lists> gefordert *)
  131.  
  132. PROCEDURE FindHandleCond(e, i : ADDRESS):BOOLEAN;
  133.  
  134. PROCEDURE FindGroupCond (e, i : ADDRESS): BOOLEAN;
  135. (*$Z=*)
  136.  
  137. PROCEDURE findMsgIdx (ptr : listWdwPtr; which: CARDINAL; VAR idx : CARDINAL);
  138.  
  139. PROCEDURE FindNextSelected (ptr : listWdwPtr; which : CARDINAL) : CARDINAL;
  140.  
  141. PROCEDURE FindPrevSelected (ptr : listWdwPtr; which : CARDINAL) : CARDINAL;
  142.  
  143. PROCEDURE FindNextDeselected (ptr : listWdwPtr; which : CARDINAL) : CARDINAL;
  144.  
  145. PROCEDURE FindPrevDeselected (ptr : listWdwPtr; which : CARDINAL) : CARDINAL;
  146.  
  147. PROCEDURE listNextMess (which : CARDINAL; nextJN, withShift: BOOLEAN; listHdl: LONGCARD; wdw : ADDRESS):CARDINAL;
  148.  
  149. PROCEDURE hasSelectedEntries (ptr : listWdwPtr; VAR first : CARDINAL): BOOLEAN;
  150.  
  151. PROCEDURE countSelectedEntries (ptr : listWdwPtr) : CARDINAL;
  152.  
  153. PROCEDURE toggleBit (VAR s : BITSET; bit: INTEGER);
  154.  
  155. PROCEDURE redrawEntry (ptr : listWdwPtr; entry: CARDINAL);
  156.  
  157. PROCEDURE toggleEntry (ptr : listWdwPtr; entry: CARDINAL);
  158.  
  159. PROCEDURE invertSelection (ptr: listWdwPtr);
  160.  
  161. PROCEDURE deselectEntries (ptr : listWdwPtr);
  162.  
  163. PROCEDURE deselectReadEntries (ptr : listWdwPtr);
  164.  
  165. PROCEDURE drawCursor (ptr: listWdwPtr);
  166.  
  167. PROCEDURE ShowCursor (ptr : listWdwPtr);
  168.  
  169. PROCEDURE AdjustTreePos (r: GrafBase.Rectangle; VAR rt : GrafBase.Rectangle);
  170.  
  171. PROCEDURE GetLinePart (ptr: listWdwPtr; num : CARDINAL; VAR mess : data.MessageType; 
  172.                        VAR line : ARRAY OF CHAR; type : partType);
  173.  
  174. PROCEDURE shrinkToEnd (ptr: listWdwPtr; doRedraw: BOOLEAN);
  175.  
  176. PROCEDURE shrinkList (ptr: listWdwPtr; removeSel : BOOLEAN; doRedraw: BOOLEAN): BOOLEAN; 
  177.  
  178. PROCEDURE showAll (ptr : listWdwPtr);
  179.  
  180. PROCEDURE selectTree (ptr: listWdwPtr; doRedraw: BOOLEAN);
  181.  
  182. PROCEDURE selectFromTop (ptr: listWdwPtr);
  183.  
  184. PROCEDURE removeTree (ptr: listWdwPtr);
  185.  
  186. PROCEDURE listSelectFiltered(wdw : INTEGER; doSelect: BOOLEAN; doRedraw: BOOLEAN);
  187.  
  188. PROCEDURE openSelected (ptr : listWdwPtr; doNotTop: BOOLEAN; withCtrl : BOOLEAN);
  189.  
  190. PROCEDURE freeList (ptr : listWdwPtr);
  191.  
  192. PROCEDURE doSort(VAR ptr : listWdwPtr; sort: sortType; withRedraw: BOOLEAN);
  193.  
  194. PROCEDURE doMark(ptr : listWdwPtr; withDial: BOOLEAN);
  195.  
  196. PROCEDURE redrawButton (wdw: INTEGER; butBox: mtUtils.tObjcTree; ob: INTEGER);
  197.  
  198. PROCEDURE careForSelected (ptr: listWdwPtr; redraw: BOOLEAN);
  199.  
  200. PROCEDURE drawListWdw (wdw, vdiH : INTEGER; special : ADDRESS; frame : GrafBase.Rectangle);
  201.  
  202. PROCEDURE checkPopups(selected: CARDINAL);
  203.  
  204. PROCEDURE handleButtons (ptr : listWdwPtr; ob : INTEGER; kstate: BITSET) : BOOLEAN;
  205.  
  206. PROCEDURE clickInListWindow(win, vdiH : INTEGER; special : ADDRESS; x,y : INTEGER; kstate : BITSET; buts: BITSET; clicks : INTEGER): BOOLEAN;
  207.  
  208. PROCEDURE handleListTimer (wdw, vdiH : INTEGER; special : ADDRESS): BOOLEAN;
  209.  
  210. PROCEDURE handleListKey (wdw, vdiH : INTEGER; special : ADDRESS; taste: INTEGER; char, scan : CHAR; kstate : BITSET) : BOOLEAN;
  211.  
  212. PROCEDURE getListScroll (wdw, vdiH : INTEGER; special : ADDRESS; VAR work : GrafBase.Rectangle);
  213.  
  214. PROCEDURE closeListWindow (wdw, vdiH : INTEGER; special : ADDRESS; force : BOOLEAN) : BOOLEAN;
  215.  
  216. PROCEDURE topListWdw (wdw, vdiH : INTEGER; special : ADDRESS) : BOOLEAN;
  217.  
  218. PROCEDURE untopListWdw (wdw, vdiH : INTEGER; special : ADDRESS);
  219.  
  220. PROCEDURE updateListWdw (wdw, vdiH : INTEGER; special : ADDRESS; update : BOOLEAN);
  221.  
  222. PROCEDURE hideListWdw (wdw, vdiH : INTEGER; special : ADDRESS; hide : BOOLEAN);
  223.  
  224. PROCEDURE setListWork (wdw, vdiH : INTEGER; special : ADDRESS; doc : GrafBase.LongRect; slided : BOOLEAN);
  225.  
  226. PROCEDURE snapListWdw (wdw, vdiH : INTEGER; special : ADDRESS; VAR work : GrafBase.Rectangle);
  227.  
  228. PROCEDURE listGetSelectedSize (ptr: listWdwPtr; VAR size: LONGCARD);
  229.  
  230. PROCEDURE listGetSelectedData (ptr: listWdwPtr; VAR adr: ADDRESS);
  231.  
  232. PROCEDURE listGetHeader (wdw: INTEGER; special: ADDRESS; mode: INTEGER;
  233.                          VAR ext, name : ARRAY OF CHAR; VAR size: LONGCARD): BOOLEAN;
  234.  
  235. PROCEDURE listReadData (wdw: INTEGER; special: ADDRESS; VAR data: ADDRESS);
  236.  
  237. PROCEDURE MakeTitle (gruppe: CARDINAL; VAR title: ARRAY OF CHAR);
  238.  
  239. END MsgListBase.
  240.